namespace Altova.Types
{
	public class QName
	{
		private string uri;

		private string prefix;

		private string local;

		public string Uri
		{
			get
			{
				return uri;
			}
			set
			{
				uri = value;
			}
		}

		public string Prefix
		{
			get
			{
				return prefix;
			}
			set
			{
				prefix = value;
			}
		}

		public string LocalName
		{
			get
			{
				return local;
			}
			set
			{
				local = value;
			}
		}

		public QName(string uri, string prefix, string local)
		{
			this.uri = uri;
			this.prefix = prefix;
			this.local = local;
		}

		public QName(string u, string l)
		{
			uri = u;
			int num = l.IndexOf(":");
			if (num == -1)
			{
				local = l;
				return;
			}
			prefix = l.Substring(0, num);
			local = l.Substring(num + 1);
		}

		public QName(string value)
		{
			parse(value);
		}

		public override string ToString()
		{
			if (prefix != null && prefix.Length != 0)
			{
				return prefix + ":" + local;
			}
			return local;
		}

		private void parse(string value)
		{
			prefix = null;
			uri = null;
			local = value;
			int num = value.IndexOf("{");
			int num2 = value.IndexOf("}");
			if (num == 0 && num2 > num)
			{
				uri = value.Substring(1, num2 - 1);
				local = value.Substring(num2 + 1);
			}
		}
	}
}
